forked from HyunWooBro/Bookmark-Manager-Plus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path개발문서.txt
366 lines (261 loc) · 16.3 KB
/
개발문서.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
//////////////////////////////////////////////////////////////////////////////////
// 동기
//////////////////////////////////////////////////////////////////////////////////////////
1차적으로는 검색에서 시작해
2차적으로는 실제 폴더 구조를 반영하기 시작하고
3차적으로는 검색에서 끝나는 것이 아니라 매니저의 역할까지로 나아가고 있다
//////////////////////////////////////////////////////////////////////////////////
// 요약
//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
// 패치 히스토리
//////////////////////////////////////////////////////////////////////////////////////////
v.x.y.z
v - 0이하는 베타버전
x - 메이저 업데이트
y - 마이너 업데이트
z - 비공지 업데이트 (따로 공지 없이 버전만 올리며, 주로 마이너 업데이트에 대한 버그 픽스)
[ ] : 비공개
v0.9.0
릴리즈
v0.9.1
[코드 리펙토링 => 최적화, 코드 정리 등]
WindowManager 버그 수정
preview에서도 아이템 개수 출력
날짜 제한
v0.9.2
[코드 리펙토링 => 최적화, 코드 정리 등]
[디자인 수정]
검색 최적화
스크롤 유지 버그 수정
v0.9.3
[코드 리펙토링 => 최적화, 코드 정리, 주석 등]
에러 메시지(title과 url 모두 필터되었다는) 버그 수정 => 보드에 추가
window 취소 버튼 작동 버그 수정
삭제할 때 NaN 나타나는 버그 수정
sibling list z-index를 수정하여 separator보다 뒤에 나오는 버그 수정된
가끔 처음 팝업 띄우고 view확장할 때 preview가 settimeout되어 덮어쓰는 버그 수정
확장 이름 수정
v0.9.4
[디자인 수정 => search-list의 아이템의 길이가 너무 길면 말줄임표 사용]
검색 최적화
다른 컴퓨터에서 exploreId 동기화 버그
v0.9.5
[디자인 수정]
[초기화 수정]
[obsolete 옵션 제거 코드 삽입]
[달력 선택하고 3초 내에 툴바에 돌아가지 않으면 자동 종료]
[달력 아이콘을 선택해서도 달력이 나타나도록 함]
[달력 열고 툴바 닫고 다시 열면 달력 닫기]
년, 월을 바로 선택할 수 있도록 함
간혹 아이콘 툴바가 열려 있던 annoyance 제거
item 이름에 <, >가 들어 있을 때 오류 발생(v0.9.4 최적화하는 과정에서 발생)
처음 날짜 지정되어 있을 때 날짜 제한 추가 (날짜 초기화 했을 때 날짜 제한도 초기화)
달력 선택하고 달력 닫히기 전에 마우스 움직이면 툴바 닫히는 버그
v0.9.6
[불필요한 파일 제거]
[디자인 수정 => 커서(팝업에서는 한계가 있기 때문에 grabbing 정도만 적용]
오늘, 어제, 일주일, 한달 날짜 버튼 추가
explore 화살표 이동 가능하면 진하게 표시
explore history 저장하기(20개)
v0.9.7
- [코드 리펙토링 => 코드 정리 등]
- [bookmarkExplore 객체를 확장 프로그램 이름에 맞게 BookmarkManagerPlus로 수정]
- [옵션 checkbox, radio 제거 => bmp 객체에 통합]
- [디자인 수정 => 필터 아이콘 툴바 순서 변경]
- [자바스크립트 로드할 때 defer 사용]
- [search의 과정 중에 return 되는 경우 아이템 리스트를 비우도록 수정]
- [warning count보다 1이 넘는 것으로 총 개수가 나오는 것을 수정]
- [warning count를 select에서 number input으로 수정하여 자유도를 부여]
- [alertify의 에러가 중복되어 나타나는 현상]
- [팝업 열었을 때 간혹 search-editor 크기가 잘못된 현상 고치기]
- [empty string search에서 URL/Title Match 와는 상관없이 진행되도록 함]
- [exploreHistory에 속하는 폴더를 삭제 시 리스트에서 제거]
- 다른 뷰에서 exploring 하는 아이템 삭제 못하게 함
- 다른 컴퓨터에서도 explore 데이터(hierarchy, history) 제대로 적용되도록 함 (컴퓨터마다 아이템 id가 다르기 때문에 발생)
- URL/Title Match 를 explore에 적용하던 버그 수정
- exploring 중인지 searching 중인지 footer에 보여주기
- incremental search 기본 값을 true로 설정
- options.html에 real-time apply 옵션 추가하여 다른 옵션 실시간 적용
- 종속적인 옵션에 대한 disabled 상태 추가
- 빈 문자열 검색은 반드시 손수 검색 아이콘을 클릭하거나 엔터를 치는 경우로 한정
- warning count는 search에만 적용하고 이 값을 넘어서도 사용자에게 confirm으로 묻지 않고 alertify로 알리기
v0.9.8
- [코드 리펙토링 => 최적화, 코드 정리 등]
- [기본 contextmenu가 #search-ediotr을 제외하면 나타나지 않도록 수정]
- [자바스크립트 로드할 때 추가된 defer 제거]
- [sortable이 외부로 빠져나갈 때 발생하는 removeChild 에러 수정]
- [explore siblings 및 explore history을 우측에 표시할 때 자리가 없을 경우 레이아웃의 문제 해결]
- [explore siblings 및 explore history가 우측에 붙어서 위치할 때 반복해서 열고 닫으면 너비가 달라지는 문제 해결]
- [explore siblings 및 explore history의 내용이 너무 길 때 search history처럼 말줄임표 사용]
- [isEmptySearchStarted 와 마찬가지로 1자리 이상 2자리 이하 검색(short search)에 대해서도 자동화]
- [separator을 이동할 때 열린 UI를 닫도록 수정]
- View가 적용된 상태에서 처음 확장할 때 explore arrow가 제대로 표시되지 않은 문제 해결
- enter로 검색할 때 2번 검색하는 버그 수정
- Scope Limit 최적화 하기
- search, explore 캐쉬 사용으로 취적화
- 검색어가 1자리 이상 2자리 이하인 경우 Incremental Search 적용하지 않기 (단, 수동 검색은 가능)
- explore history 리스트 보여주기
- explore sibling을 보여줄 때 현재 folder을 강조하고 스크롤 하기
- 그룹을 접었을 때 아이템 개수 및 배경 색 표시
v0.9.9
- [디자인 수정 => 달력 아이콘]
- [코드 리펙토링 => 최적화, 코드, 용어 정리 등]
- [이미지 필요 없는 것 지우기]
- [explore history가 25개까지 저장되도록 수정]
- [explore 폴더를 ctrl 클릭할 때 새 탭에서 확장 화면이 열리는 문제 해결]
- [아이템을 아래의 공간에서 sort할 때 발생하는 문제 수정]
- [빈 문자열로 시작하는 아이템의 계층 정렬에서의 문제 해결]
- [잘라내기를 같은 폴더의 빈 공간에 붙여넣기할 때 순서가 바뀌는 문제 해결]
- [간혹 append/remove view 한 후 icon toolbar 의 팝업 위치가 잘못되는 현상]
- [explore history 및 explore siblings 에서 스크롤이 제대로 안되었던 문제 해결]
- [short search을 한 후 Explore을 하고 검색어를 입력만 하면 적용되는 문제 해결 (explore할 때 isShortSearchStarted을 리셋하지 않았음)]
- [아이템 이동을 제외한 추가, 삭제는 최적화가 필요 => 조금 최적화하긴 했지만 크롬 북마크조차 느린 것으로 보아 근본적으로 해결하기는 힘들 것 같다]
- [최신 업데이트를 조회하여 업데이트가 가능할 경우 통보]
- select을 하면서 외부로 나가면 취소되는 현상 수정
- 와일드카드 또는 정규표현식에서 모든 대상을 검색하는 경우(.*)의 무한루프 해결
- sort by title에서 title이 없는 경우 group의 레이아웃 문제
- View에도 option 의 일부가 적용되는 문제 해결
- 옵션을 초기 상태로 돌리는 기능을 option menu 및 options.html에 추가
- View가 확장된 상태를 저장
- 페이지/폴더를 생성 및 이동 시 강조 (마우스 드래그, 단축키, 컨텍스트 메뉴 등)
- 기본적인 단축키 완성하고 팁(아이콘 클릭과 관련하여)과 함께 공개
- 같은 곳으로 이동해도 str_alertify_error_sort_subfolder 메시지가 나오는 현상 수정하기
- refresh 최적화
- search 중에 닫힌 그룹을 선택하는 부분이 제대로 적용 안됨
- 닫힌 그룹을 드래그로 선택할 수 있도록 하기
- 팁에 explore arrow 에서 오른쪽 마우스를 클릭하여 히스토리를 볼 수 있음을 언급
- search 중에 폴더에 대해 페이지 및 폴더를 추가할 수 있는 context 메뉴 추가
- GitHub 관련 내용도 추가
- explore history에도 drag 및 ctrl + 클릭 추가
- 간혹 다른 컴퓨터에서 연동하는 과정에서 데이터가 corrupt되는 경우가 있기 때문에 해결하자
- 아이템이 존재할 때 첫번째 아이템의 컨텍스트 메뉴로 페이지 및 폴더를 추가하면 마지막에 추가되는 문제
- explore history 중간 폴더를 제거한 후 다시 방문하면 적절하게 처리되지 않은 문제
- 선택된 아이템이 있음에도 닫힌 그룹의 색이 나타나지 않는 문제
- 확장을 열 때 간혹 오류(?)로 인해 깨지는 현상 (2020년 이후에 발생한 듯?)
- 페이지를 추가하거나 옮길 때 해당 페이지가 보이지 않는 현상 (2020년 11월 이후에 발생한 듯?)
/////////////////////////////////////
메모도 뷰에서 정리
미리보기를 같은 뷰에서 컨텍스트 메뉴처럼 이어져서 보여지는 기능
드래그로 아이템 옮길 때 리스트에서 제거되었다가 다시 보이지 말고 바로 옮겨지는 것처럼 보이도록 하자
explore folder에도 drop 및 contextmenu 적용하자
show in folder할 때 자동 스크롤 뒤 강조표시 잠시동안 보여주기 (크롬 개발자도구처럼)
recursive 옵션 삭제 및 Ctrl+F로 현재 explore 폴더 강조 표시 => 추가하기
현재 선택된 탭의 도메인과 같은 페이지 찾기 기능 => 추가하기
현재 선택된 탭이 즐겨찾기가 된 경우 찾기 기능 => 추가하기
컨텍스트 메뉴에 같은 도메인 페이지 찾기 기능 => 추가하기
폴더 즐겨찾기 추가해서 footer 또는 view에서 바로 접근할 수 있도록
a 태그 색상에 대한 의문 - 로컬 확장에서는 기본이 파란색인데 공유 확장에서는 보라색이다. 왜 그런것일까
View에서 페이지의 화면 미리보기 기능 추가(?)
동영상 제작 (50명 이상)
v1.0.0 (100명 이상)
기부 받기(페이팔) => 추가하기(사용자 500명 넘으면)
유튜브 동영상 올리기 => 추가하기
단축키 정리 및 완성 => 추가하기
메모 기능 => 추가하기
autocomplete 구현 => 추가하기
멀티 언어 지원
생성한 날짜 이외에 수정한 날짜로 검색 추가
http와 https 를 구분해서 검색 추가
//////////////////////////////////////////////////////////////////////////////////
// 크롬 확장 업데이트
//////////////////////////////////////////////////////////////////////////////////////////
크롬 대쉬보드로 업로드 했다면 자동으로 확장이 업데이트 된다. 단, 크롬 브라우저 자체의 업데이트처럼 브라우저를 재시작해야 적용되는 것으로 보인다.
나는 기본적으로 브라우저를 재시작하지 않으므로 수동으로 업데이트 해야 한다.
//////////////////////////////////////////////////////////////////////////////////
// 크롬 API에 대한 분석
//////////////////////////////////////////////////////////////////////////////////////////
대부분의 API는 비동기적으로 작동하므로 이 동작 방식을 제대로 이해할 필요가 있다. 멀티스레드의 문제처럼 제대로
이해하지 못하면 예측하기 힘든 문제점들이 발생할 수 있다.
chrome.bookmarks.get .. 등은 북마크, 기타 북마크가 포함되어 있지만
chrome.bookmarks.search 에는 제외되어 있다.
북마크의 id 값은 기본 북마크 북마크바, 기타 북마크를 제외하면 컴퓨터마다 다르다. 큰 애로사항이 아닐 수 없다.
한편, 이 id는 중복이 되지 않는 것 같다. 즉 어떤 컴퓨터에서 할당된 id는 다른 컴퓨터에서는 할당되지 않는 것이다.
이 값이 중복되는 것보다는 낫다.
//////////////////////////////////////////////////////////////////////////////////
// JQuery UI에 대한 분석
//////////////////////////////////////////////////////////////////////////////////////////
Options 중에서 cancel 등은 상위 객체의 것이다.
[Options]
cancel 대상과 같은 레벨에서 시작
//////////////////////////////////////////////////////////////////////////////////
// JQuery Draggable에 대한 분석
//////////////////////////////////////////////////////////////////////////////////////////
[클래스]
//////////////////////////////////////////////////////////////////////////////////
// JQuery Droppable에 대한 분석
//////////////////////////////////////////////////////////////////////////////////////////
[클래스]
대상 ui-droppable (기본)
ui-droppable-active (시작되었음)
ui-droppable-hover (drop할 수 있음)
//////////////////////////////////////////////////////////////////////////////////
// JQuery Selectable에 대한 분석
//////////////////////////////////////////////////////////////////////////////////////////
드래그 선택, ctrl 선택은 존재하지만 shift 선택은 없다. shift 선택은 추가하자.
[클래스]
대상 ui-selectable 드래그시 선택영역을 표시할 공간
요소 ui-selectee (기본)
ui-selecting
ui-selected
ui-unselecting
ui-unselected
[Events]
이벤트명 호출되는 순서 설명
create $.Widget _createWidget
start _mouseStart 시작할 때
unselecting _mouseDrag 드래그시 선택그룹에서 제외될 때
selecting _mouseDrag 드래그시 선택그룹에서 추가될 때
unselected _mouseStop 이동이 완료될 때 기존의 선택그룹과 비교해서 제외된 경우
selected _mouseStop 이동이 완료될 때 기존의 선택그룹과 비교해서 추가된 경우
stop _mouseStop 종료될 때
//////////////////////////////////////////////////////////////////////////////////
// JQuery Sortable에 대한 분석
//////////////////////////////////////////////////////////////////////////////////////////
다른 Widget과 마찬가지로 Widget Factory를 통해 Mouse Interaction을 확장하여 만들어졌다.
[클래스]
대상 ui-sortable 아이템이 없을 때 추가되는 영역 (아이템이 항상 존재한다면 items 상위에 위치하는 한 어디에 위치하든 의미없다)
placeholder ui-sortable-placeholder
helper ui-sortable-helper
[Options]
helper
placeholder
items
handle items 하위임 (즉, 대상보다 한 단계 낮은 단계부터)
[Methods]
cancel sort를 취소하고 원 상태로 회귀 (stop, receive에서만 호출하는 것이 권장된다)
destroy
disable
enable
instance
option
refresh
refreshPositions
serialize
toArray
widget
[Events]
어떤 이벤트든지 false를 리턴하면 cancel()이 호출된다. 즉, 원래대로 돌아간다.
모든 이벤트는 event, ui 의 두 개의 인자를 제공한다.
helper helper 객체
item 드래그되는 원래 요소
offset helper의 absolute 위치
position helper의 위치
originalPosition 원래 요소의 위치
sender
placeholder placeholder 객체
이벤트명 호출되는 순서 설명
create $.Widget _createWidget
start _mouseStart 시작할 때
activate _mouseStart 연결된 모든 리스트에게 시작할 때
change _mouseDrag _contactContainers, _mouseDrag 드래그시 DOM이 수정될 때
deactivate cancel 연결된 모든 리스트에게 취소될 때
out _mouseDrag _contactContainers, cancel 리스트를 벗어난 경우 또는 이동이 종료되기 전
over _mouseDrag _contactContainers 리스트에 들어온 경우
receive _mouseStop _clear
remove _mouseStop _clear
sort _mouseDrag 매번 드래그시 무조건 호출된다.
update _mouseStop _clear 이동이 완료될 때 이미 DOM이 수정된 경우
beforeStop _mouseStop _clear helper을 제거하고 stop을 호출하기 전
stop _mouseStop _clear 종료될 때