Resume Down Link

웹 퍼블리싱 5년차 개발자 김연수 입니다.
디자이너로써 경험을 통해 습득한 시각으로, 소비자가 상호적이며 안정적이라고 느낄 수 있는 사이트를 구축합니다.
비개발직무를 수행하였던 경험이 있기에 개발을 전혀 모르는 팀과의 협업에도 유기적인 업무 진행을 할 수 있습니다.

웹 에이전시 회사에서 경력을 바탕으로, 클라이언트의 니즈 파악과 그를 통한 효율적 프로젝트 진행에 자신있습니다.

웹 개발팀이 처음 신설된 바로 전 회사에 팀 리더로 입사하게 되어 업무를 진행했습니다.
입사 후 처음 한 일은 개발팀 이외에도 각 팀과의 업무 효율성을 최대로 증가시키기 위해 체계를 정립하는 것이었습니다. 작업물 파일의 네이밍의 규칙화부터, 클라이언트 대응 시 각 팀이 해야할 레퍼런스 제시까지, 팀장으로써 모든 과정을 주도적으로 이끌었습니다.
그 결과, 회사는 월 매출 7천만원대에서 2억원까지 상승하게 되었습니다.

리더로써 팀원들의 성장을 위해 꾸준하게 노력하며, 팀원들의 Develop 위해 과제를 냈고 그 결과 팀 전체적의 속도와 퀄리티가 눈에 띄게 향상되었습니다. 그를 통해, 한 달에 총 15개 내외로 제작하던 사이트 양을 약 두 배 가량 제작 할 수 있게 되었습니다.

현재는 저 자신의 발전을 위해 좀 더 깊이있게 개발 언어를 공부함과 동시에, 부족하다고 느꼈던 JavaScript를 중심으로 다시 한 번 HTML과 CSS, Sass를 공부하고 있습니다.
공부를 거듭함에 따라 개발에 더욱 더 흥미를 느껴, 추가적으로 React와 Vue.js도 공부 중에 있습니다.

업무 진행에 있어 어려움을 늘 존재합니다.
저는 그러한 상황에서도 끊임없이 방법을 찾고자 노력하여 목표 달성을 최우선으로 생각합니다.

꿈을 쫓아 끊임없이 앞으로 나아가는,
우주인 김연수 입니다.

jquery-circle-progress

jquery-circle-progress

Build status Bower version NPM version

jQuery Plugin to draw animated circular progress bars like this:

Check out more examples! Or maybe the crazy one?

Install

Make your choice:

Usage

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="jquery-circle-progress/dist/circle-progress.js"></script>

<div id="circle"></div>

<script>
  $('#circle').circleProgress({
    value: 0.75,
    size: 80,
    fill: {
      gradient: ["red", "orange"]
    }
  });
</script>

If you use AMD or CommonJS with some JS bundler - see the UMD section below.

Options

Specify options like in example above.

Option Description
value This is the only required option. It should be from 0.0 to 1.0
Default: 0
size Size of the circle / canvas in pixels
Default: 100
startAngle Initial angle (for 0 value)
Default: -Math.PI
reverse Reverse animation and arc draw
Default: false
thickness Width of the arc. By default it’s automatically calculated as 1/14 of size but you may set your own number
Default: "auto"
lineCap Arc line cap: "butt", "round" or "square" - read more
Default: "butt"
fill The arc fill config. You may specify next:
- "#ff1e41"
- { color: "#ff1e41" }
- { color: 'rgba(255, 255, 255, .3)' }
- { gradient: ["red", "green", "blue"] }
- { gradient: [["red", .2], ["green", .3], ["blue", .8]] }
- { gradient: [ ... ], gradientAngle: Math.PI / 4 }
- { gradient: [ ... ], gradientDirection: [x0, y0, x1, y1] }
- { image: "http://i.imgur.com/pT0i89v.png" }
- { image: imageInstance }
- { color: "lime", image: "http://i.imgur.com/pT0i89v.png" }
Default: { gradient: ["#3aeabb", "#fdd250"] }
emptyFill Color of the “empty” arc. Only a color fill supported by now
Default: "rgba(0, 0, 0, .1)"
animation Animation config. See jQuery animations.
You may also set it to false
Default: { duration: 1200, easing: "circleProgressEase" }
"circleProgressEase" is just a ease-in-out-cubic easing
animationStartValue Default animation starts at 0.0 and ends at specified value. Let’s call this direct animation. If you want to make reversed animation then you should set animationStartValue to 1.0. Also you may specify any other value from 0.0 to 1.0
Default: 0.0
insertMode Canvas insertion mode: append or prepend it into the parent element?
Default: "prepend"

From version 1.1.3 you can specify any config option as HTML data- attribute.

It will work only on init, i.e. after the widget is inited you may update its properties only via .circleProgress({/*...*/}) method. data- attributes will be ignored.

Also, object options like "fill" or "animation" should be valid JSON (and don’t forget about HTML-escaping):

<div
  class="circle"
  data-value="0.9"
  data-size="60"
  data-thickness="20"
  data-animation-start-value="1.0"
  data-fill="{
    &quot;color&quot;: &quot;rgba(0, 0, 0, .3)&quot;,
    &quot;image&quot;: &quot;http://i.imgur.com/pT0i89v.png&quot;
  }"
  data-reverse="true"
></div>

Events

Event Description Handler
circle-inited Triggered on init or re-init. function(event):
- event - jQuery event
circle-animation-start Triggered once the animation is started. function(event):
- event - jQuery event
circle-animation-progress Triggered on each animation tick. function(event, animationProgress, stepValue):
- event - jQuery event
- animationProgress - from 0.0 to 1.0
- stepValue - current step value: from 0.0 to value
circle-animation-end Triggered once the animation is finished. function(event):
- event - jQuery event

Browsers support

The library uses <canvas> which is supported by all modern browsers (including mobile browsers) and Internet Explorer 9+ (Can I Use).

I haven’t implemented any fallback / polyfill for unsupported browsers yet (i.e. for Internet Explorer 8 and older / misc browsers).

UMD

I use UMD template for jQuery plugin which combines three things:

  • works fine with browser globals
  • works fine with AMD
  • works fine with CommonJS

Browser globals

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="jquery-circle-progress/dist/circle-progress.js"></script>
<script>
  $('#circle').circleProgress({
    value: 0.75,
  });
</script>

AMD

Assuming that you have jquery, jquery-circle-progress and requirejs in libs/ directory:

<script src="libs/requirejs/require.js"></script>
<script>
  requirejs.config({
    paths: {
      'jquery': 'libs/jquery/dist/jquery', // 'jquery' path is required - 'jquery-circle-progress' requires it
      'jquery-circle-progress': 'libs/jquery-circle-progress/dist/circle-progress' // and this one is for your convenience
    }
  });
  requirejs(['jquery', 'jquery-circle-progress'], function($) {
    $('#circle').circleProgress({
      value: 0.75
    });
  });
</script>

You can configure RequireJS as you wish, just make 'jquery' dependency reachable.

CommonJS

// script.js
require('jquery-circle-progress');
var $ = require('jquery');
$('#circle').circleProgress({
  value: 0.75
});
some-js-bundler < script.js > script.bundle.js
<script src="script.bundle.js"></script>

You can use any JS bundler (Webpack, Browserify, etc) - no specific configuration required.

API

Get/set value

Get it:

$('.circle').circleProgress({ value: 0.5 });
var value = $('.circle').circleProgress('value'); // 0.5

It will return the first item’s value (by first I mean when $('.circle').length >= 1). It works only if the widget is already inited. Raises an error otherwise.

Set it:

$('.circle').circleProgress('value', 0.75); // set value to 0.75 & animate the change

It will update all selected items value and animate the change. It doesn’t redraw the widget - it updates the value & animates the changes. For example, it may be an AJAX loading indicator, which shows the loading progress.

Get <canvas>

$('.circle').circleProgress({ value: 0.5 });
var canvas = $('.circle').circleProgress('widget');

It will return the first item’s <canvas> (by first I mean when $('.circle').length >= 1). It works only if the widget is already inited. Raises an error otherwise.

Get CircleProgress instance

var instance = $('#circle').data('circle-progress');

Redraw existing circle

$('#circle').circleProgress({ value: 0.5, fill: { color: 'orange' }});
$('#circle').circleProgress('redraw'); // use current configuration and redraw
$('#circle').circleProgress(); // alias for 'redraw'
$('#circle').circleProgress({ size: 150 }); // set new size and redraw

It works only if the widget is already inited. Raises an error otherwise.

Change default options

$.circleProgress.defaults.size = 50;

FAQ

How to start the animation only when the circle appears in browser's view (on scrolling)?
Here is my proposed solution.
How to make the size flexible?
E.g. for responsive design, you can do it in the following way.
What if I need it to run in IE8?
There is no full-feature support for IE8 (actually, I didn't imlpement IE8 support at all). But you may follow my recommendations.
How to stop the animation?
Here is what you can do.
Can I handle "click" event?
It's not in the "core" but you can use my example of mouse/touch events handling.
May I customize the shape somehow?
It's a bit "tricky" but possible. Here is my little collection. </dl> Development ----------- ### Install ```sh git clone git@github.com:kottenator/jquery-circle-progress.git npm install ``` ### Modify You need to update `dist/circle-progress.min.js` after any change to `dist/circle-progress.js`: ```sh npm run build-min ``` If you're using one of JetBrains IDEs - you can configure a File Watcher. It's also possible to use some CLI tool like [Watchman](https://facebook.github.io/watchman/). ### Test ```sh npm test ``` SauceLabs: ```sh export SAUCE_USERNAME=... export SAUCE_ACCESS_KEY=... export BUILD_NUMBER=... npm test -- karma-saucelabs.conf.js ``` ### Build docs The API docs are not complete yet but you can build them: ```sh npm run build-docs ``` They will be generated in `docs/api/`. ### Release new version * finalize the code * update the version in `package.json`, `bower.json` and `dist/circle-progress.js` docstring * update min dist: `npm run build-min` * update `docs/index.html` - link to the latest dist version _(which doesn't exist yet)_ * push the changes to `master` branch * release on Bower: just create a Git tag (e.g.): `git tag v1.2.3 && git push --tags` * release on GitHub - add release notes to the Git tag * release on NPM: `npm publish`, but be aware: > Once a package is published with a given name and version, that specific name and version combination can never be used again - [NPM docs](https://docs.npmjs.com/cli/publish)